package com.dify.tool.common.utils;

import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ReflectUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.google.common.collect.Lists;
import com.dify.tool.api.common.PageResult;
import org.springframework.beans.BeanUtils;

import java.util.List;

/**
 * @author shl
 * @date 2024-07-01
 * 分页工具
 */
public class PageUtil {
    /**
     * mybatis-plus 的IPage接口与分页返回对象的转换
     *
     * @param clazz 返回前端对象
     * @param page  mybatis-plus分页查询结果对象
     * @param <T>   返回前端对象泛型
     * @param <R>   mybatis-plus分页查询结果对象泛型
     * @return
     */
    public static <T, R> PageResult<T> convert(Class<T> clazz, IPage<R> page) {
        List<R> list = page.getRecords();
        List<T> results = Lists.newArrayList();
        if (CollectionUtil.isNotEmpty(list)) {
            for (R r : list) {
                T t = ReflectUtil.newInstance(clazz);
                BeanUtils.copyProperties(r, t);
                results.add(t);
            }
        }
        return new PageResult<>((int) page.getCurrent(), (int) page.getSize(),
                (int) page.getTotal(), results);
    }
}
